﻿using FluentNHibernate.Mapping;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OneStationFile.Model
{
    class Map
    {
    }
    #region 权限管理
    public class ModularMap : ClassMap<Modular>
    {
        public ModularMap()
        {
            Table("Modular");
            //Id(x => x.id);
            Id(p => p.Id).GeneratedBy.Sequence("SEQ_SYSDEPT");
            Map(m => m.Name).Length(20);
            Map(m => m.Describe).Length(200);
            Map(p => p.IsShow);
            HasMany<Node>(p => p.Nodes)//一对多
                .AsSet()
                .Cascade
                .All();
        }
    }
    public class RoleMap : ClassMap<Role>
    {
        public RoleMap()
        {
            //指定持久化类对应的数据表
            Table("Role");
            //Id(x => x.id);
            Id(p => p.Id).GeneratedBy.Sequence("SEQ_SYSDEPT");
            Map(m => m.Name).Length(20);
            Map(p => p.Describe).Length(100);
            HasManyToMany<Node>(p => p.Nodes)
                .AsSet()
                .Cascade
                .All();
            HasMany<Users>(p => p.Users)
                .AsSet()
                .Cascade
                .All();
        }

    }
    public class NodeMap : ClassMap<Node>
    {
        public NodeMap()
        {
            //指定持久化类对应的数据表
            Table("Node");
            //Id(x => x.id);
            Id(p => p.Id).GeneratedBy.Sequence("SEQ_SYSDEPT");
            Map(m => m.Name).Length(20);
            Map(p => p.Url).Length(100);
            Map(p => p.Controller).Length(50);
            Map(p => p.Action).Length(50);
            Map(p => p.IsShow);
            Map(P => P.ParentId);
            Map(p => p.NodeLevelD);
            HasManyToMany<Role>(p => p.Roles)
                .AsSet()
                .Cascade
                .All();
            References<Modular>(o => o.Modular)
              .Not
              .Cascade
              .All();
            //HasOne<Modular>(p => p.Modular)
            //    .Not
            //    .Cascade
            //   .All()
            //   .Constrained();
        }

    }
    public class UserMap : ClassMap<Users>
    {
        public UserMap()
        {
            //指定持久化类对应的数据表
            Table("Users");
            //Id(x => x.id);
            Id(p => p.Id).GeneratedBy.Sequence("SEQ_SYSDEPT");
            Map(m => m.Name).Length(20);
            Map(m => m.Pwd).Length(50);
            Map(p => p.Account).Length(20);
            References<Role>(o => o.Role)
                .Not
                .Cascade
                .All();
            //HasOne<Role>(p => p.Role)
            //    .Not
            //    .Cascade
            //    .All();
            //    //.Constrained();
        }

    }
    #endregion
}
